#include "hw.h"

void system_clock_init(void) {
    // // 启用HSI时钟
    // RCC_CR |= (1 << 0);
    // // QEMU无需等待HSI就绪
}

// 全局毫秒计数器（中断中递增）
static volatile uint32_t systick_ms_count = 0;

// ----------------------------
// SysTick 初始化：1ms 中断一次
// 系统时钟：HSI 8MHz，AHB 不分频（8MHz），SysTick 时钟源 = AHB/8 = 1MHz
// ----------------------------
void systick_init(void) {
    // // 1. 关闭 SysTick 计数器和中断
    // SYSTICK_CTRL &= ~((1 << 0) | (1 << 1));  // 清除 bit0（计数器使能）和 bit1（中断使能）

    // // 2. 设置重载值：1ms 中断一次（1MHz 时钟下，计数 1000 次为 1ms）
    // // 重载值 = 1000 - 1（因为从重载值递减到 0 为一个周期）
    // SYSTICK_LOAD = 1000 - 1;

    // // 3. 清除当前值寄存器
    // SYSTICK_VAL = 0;

    // // 4. 配置 SysTick：使能中断、选择时钟源（AHB/8）、启动计数器
    // // bit2=0 → 时钟源 = AHB/8（1MHz）；bit1=1 → 使能中断；bit0=1 → 启动计数器
    // SYSTICK_CTRL |= (1 << 1) | (1 << 0);
}

void systick_cnt_inc(void)
{
    systick_ms_count++;
}

uint32_t systick_cnt_get(void)
{
    return systick_ms_count;
}